package com.zmn.brs.persistence.interfaces.blacklist;

import com.zmn.brs.model.entity.blacklist.Blacklist;
import com.zmn.brs.model.entity.blacklist.query.BlacklistQuery;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 描述: 黑名单数据库访问类
 *
 * @author wangjie
 * @since 2017-07-31
 **/
public interface BlacklistDao {

    /**
     * 描述: 根据黑名单id 查询数据
     *
     * @param blackId   黑名单id
     * @param blackType 黑名单类型
     * @return com.zmn.plat.model.entity.blacklist.Blacklist 黑名单
     **/
    Blacklist findByIdAndType(@Param(value = "blackId") Integer blackId, @Param(value = "blackType") Integer blackType);

    /**
     * 描述: 根据条件查询黑名单数据 分页
     *
     * @param query 查询条件
     * @return java.util.List<com.zmn.plat.model.entity.blacklist.Blacklist>
     **/
    List<Blacklist> listPageByQuery(BlacklistQuery query);

    /**
     * 描述: 根据条件查询黑名单数据条数
     *
     * @param query 查询条件
     * @return java.util.List<com.zmn.plat.model.entity.blacklist.Blacklist>
     **/
    Integer countByQuery(BlacklistQuery query);

    /**
     * 描述: 根据条件查询黑名单数据 不分页
     *
     * @param query 查询条件
     * @return java.util.List<com.zmn.plat.model.entity.blacklist.Blacklist>
     **/
    List<Blacklist> listByQuery(BlacklistQuery query);

    /**
     * 描述: 根据白名单内容查询数据
     *
     * @param blackNum 白名单内容
     * @return java.util.List<com.zmn.plat.model.entity.whitelist.Whitelist>
     * @author wangjie
     * @since 2019/8/2
     **/
    List<Blacklist> listByBlackNum(List<String> blackNum);

    /**
     * 描述: 新增黑名单
     *
     * @param blacklist 黑名单
     * @return java.lang.Boolean
     **/
    Boolean insertBlack(Blacklist blacklist);

    /**
     * 描述: 删除黑名单数据
     *
     * @param blackId   黑名单id
     * @param blackType 黑名单类型
     * @return java.lang.Boolean
     **/
    Boolean deleteBlackByIdAndType(@Param(value = "blackId") Integer blackId, @Param(value = "blackType") Integer blackType);
}
